#define  _CRT_SECURE_NO_WARNINGS 1// int add(int x, int y)
//{
//	return x + y;
//		
//}
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d %d", &a, &b);
//	int c = add(a,b);
//	printf("%d", c);
//	return 0;
//}
//#include<stdio,h>
//int test(int arr[], int sz)
//{
//	int i = 0;
//	for (i = 0; i <sz; i++)
//	{
//		arr[i] = -1;
//	}
//}
//int print(int arr[],int sz)
//{
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d", arr[i]);
//	}
//}
//int main()
//{
//	int arr[10] = { 0 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	test(arr,sz);
//	print(arr,sz);
//	return 0;
//}
#include<stdio.h>
//void test(int arr[], int sz)
//{
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		arr[i] = -1;
//	}
//}
//void  print(int arr[], int sz)
//{
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}printf("\n");
//}
//int main()
//{
//	int arr[10] = { 0 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	test(arr, sz);
//	print(arr, sz);
//	return 0;
//}
int past(int y)
{
	if ((y % 4 == 0 )&& (y % 100 != 0)||(y % 400 == 0))
		return 1;
	else
		return 0;

}
int day(int y, int m)
{
	int arr[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
	int i = 0;
	 int day= arr[m];
	if (past(y) && y == 2)
		day += 1;
	return day;
}


int main()
{
	int y = 0;
	int m = 0;
	scanf("%d %d", &y, &m);
	int days = day(y, m);
	printf("%d\n", days);
	return 0;
}